package io.legado.app.ui.login

import android.os.Bundle
import androidx.activity.viewModels
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
import io.legado.app.data.entities.BaseSource
import io.legado.app.databinding.ActivitySourceLoginBinding
import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.viewbindingdelegate.viewBinding


class SourceLoginActivity : VMBaseActivity<ActivitySourceLoginBinding, SourceLoginViewModel>() {

    override val binding by viewBinding(ActivitySourceLoginBinding::inflate)
    override val viewModel by viewModels<SourceLoginViewModel>()

    /**
     * 当活动的创建过程完成时调用该方法
     *
     * @param savedInstanceState 保存的实例状态，如果活动是第一次创建则为null
     */
    override fun onActivityCreated(savedInstanceState: Bundle?) {
        // 初始化视图模型的数据，传递当前的intent对象给视图模型
        viewModel.initData(intent) { source ->
            // 当数据初始化完成后，调用initView方法初始化视图
            initView(source)
        }
    }

    /**
     * 初始化视图方法，根据数据源的登录界面配置，选择合适的登录界面进行展示
     *
     * @param source 数据源对象，包含登录界面的配置信息
     */
    private fun initView(source: BaseSource) {
        // 判断数据源中的登录界面配置是否为空或null，从而决定展示哪种登录界面
        if (source.loginUi.isNullOrEmpty()) {
            // 如果登录界面配置为空或null，则通过Fragment事务替换当前Fragment为WebView登录界面
            supportFragmentManager.beginTransaction()
                .replace(R.id.fl_fragment, WebViewLoginFragment(), "webViewLogin")
                .commit()
        } else {
            // 如果登录界面配置不为空，则展示自定义登录对话框
            showDialogFragment<SourceLoginDialog>()
        }
    }

}